The present technique relates to an apparatus and method for managing snoop operations.
A system may include a plurality of master devices that can perform data access operations in order to read data from, and write data to, memory. Those master devices may be provided with local caching structures to enable them to maintain copies of a subset of the data, and as a result it is often necessary to provide a coherency mechanism in order to ensure that each master device is able to access the most up-to-date version of the data being maintained within the system.
For instance, when one master device issues an access request specifying a target address, it is possible that one or more of the other master devices may have cached copies of the data from the target address, and hence to maintain coherency a snoop unit can be used to send snoop transactions to the other master devices to check the status of the cached copies at those other devices, for example to identify the most up-to-date data value for the target address. Whilst in one known arrangement, the snoop unit can be arranged to issue snoop transactions (also referred to herein as snoop requests) to all of the master devices that are capable of storing cached copies of the data, in an alternative arrangement it is known for the snoop unit to use a snoop filter in order to seek to reduce the number of snoop transactions required. In particular, a snoop filter may record which master devices have cached data for various addresses. By only sending snoop transactions to the master devices recorded in the snoop filter for a given address, the number of snoop transactions can be reduced.
However, as systems increase in complexity, the number of master devices within such systems are increasing, and this can have a significant impact on the size of the snoop filter storage required within the snoop unit to track which master devices have cached data for the various addresses being monitored within the snoop unit. As the size of the snoop filter storage increases, this not only increases the cost of providing the snoop filter storage, but also can have knock-on adverse effects, such as increasing the power consumption required by the snoop unit, and increasing the time taken to access the snoop filter storage in order to obtain the information used to control the snoop requests issued by the snoop unit.